package com.lvy.hczn.front.business.dto;

import com.lvy.hczn.front.system.domain.business.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.Valid;
import java.io.Serializable;
import java.util.List;

@Data
public class Param implements Serializable {

    /**
     * topic
     */
    private String topic;

    /**
     * 提货单/取货单
     */
    private String deliveryOrderCode;

    /**
     * 货箱出库不入库,1、空箱；2、非空箱出库且不入库；
     */
    private Integer outbound;

    /**
     * 出库且会入库，默认false不入库
     * bit3 校验，提前告诉WCS此箱可能会继续入库的货箱，（适用于所有，即，不带bit3，会持续下架，带bit3则只下一个箱子）
     * 带bit3的出库，继续入库后，徐带bit3，即，有可能入库的出库指令，重新入库需带bit3
     */
    private boolean outboundAndEntry;

    /**
     * 空箱批量出库数量
     */
    private Integer outboundNumber;

    /**
     * 入库单
     */
    private String entryCode;

    /**
     * 采购单
     */
    private String purchaseOrderCode;

    /**
     * wcs数据
     */
    private WcsData map;

    /**
     * 指令参数
     */
    @Valid
    private UpOrDownPolicy upOrDownPolicy;

    /**
     * 货箱
     */
    @Valid
    private GoodsBox goodsBox;

    /**
     * 货箱详情
     */
    private List<GoodsBoxDetail> list;

    @ApiModelProperty(value = "销售退货列表")
    private List<SaleOrderDetail> detailList;

    /**
     * 温区
     */
    private Integer tempNum;

    /**
     * 货箱类型：0：大货箱，1：小货箱
     * 只有空箱批量出库的时候使用到
     */
    private String goodsBoxSpecType;

    /**
     * 操作员页面、
     * 1、空箱出入库，以及根据藿香编号出库页面
     * 2、调拨页面
     * 3、采购入库页面
     */
    private int operationPage;

    /**
     * 是否大件0:否,1:是
     */
    private Integer bigProduct;

    /**
     * 原料箱变空箱，比如，合箱列表的空箱入库
     */
    private boolean doEmpty;

    /**
     * 销售退货入库，退货入库，强制入库时，需要赋值，然后离开缓存位更新数据
     */
    private boolean returnEntry;

    /**
     * 合箱，退货入库是否下架货箱
     */
    private boolean isDownload;
}
